 // 扁平数据转换成树形，爸爸去哪儿，先找父节点，还得区分1级节点

    // 每条数据，只会有一个根数据

    // currentKey 是当前节点的字段标识(属性名)
    // parentKey  父节点的字段标识(属性名)
    // childrenKey  子节点的字段标识(子节点的字段名，属性名)
    
    /**
     * 
     * @param {Arry} data 扁平数据
     * @param {String} currentKey 是当前节点的字段标识(属性名)
     * @param {String} parentKey 父节点的字段标识(属性名)
     * @param {String} childrenKey 子节点的字段标识(子节点的字段名，属性名)
     * @returns 
     */
    
export default function toTree(data,currentKey='id',parentKey='parentId',childrenKey='children'){
        // 储存树形数据的数组
        let treeArr = [];

        // 再次声明一个函数
        function recursion(data){
            data.forEach(item => {
                // 说明这个是一个子节点
                if(item[parentKey]){
                    // 找他的父节点
                    let parent = data.find(p => p[currentKey] === item[parentKey]);
                    // 判断父节点是否有children属性
                    if(!parent[childrenKey]){
                        // 添加一个children属性，并且是一个空数组
                        parent[childrenKey] = []
                    }
                    parent[childrenKey].push(item)
                }else{
                    treeArr.push(item)
                }
            });
        }

        recursion(data)
        return treeArr;

    }